<template>
  <div>
    <hr />
    <div class="tou">
      <el-button type="success">添加会员</el-button>
      <el-input
        v-model="keyword"
        placeholder="手机号/邮箱/会员昵称"
        style="width: 200px; margin-left: 1250px"
      ></el-input>
      <el-button type="info">搜索</el-button>
      <el-button>高级搜索</el-button>
    </div>
    <!-- 表格内容 -->
    <el-table :data="zbqusers" border style="width: 100%; margin-top: 10px">
      <el-table-column prop="date" label="会员" width="180">
        <template slot-scope="scope">
          <div style="width: 140px">

+            <el-image
              :src="scope.row.avatar"
              style="height: 80px; width: 80px; border-radius: 50px"
            ></el-image>
            <p>用户名:{{ scope.row.username }}</p>
            <p>用户id:{{ scope.row.id }}</p>
          </div>
        </template>
      </el-table-column>
      <el-table-column prop="user_level.name" label="会员等级" width="180">
      </el-table-column>
      <el-table-column prop="create_time" label="登录注册"> </el-table-column>
      <el-table-column label="状态">
        <el-button type="danger" plain>危险按钮</el-button>
      </el-table-column>
      <el-table-column label="操作">
        <template slot-scope="scope">
          <!-- 修改 -->
          <el-button
            type="primary"
            icon="el-icon-edit"
            @click="zbqrdit(scope.row)"
          ></el-button>
          <!-- 删除 -->
          <el-button
            type="danger"
            icon="el-icon-delete"
            @click="zbqdel(scope.row.id)"
          ></el-button>
        </template>
      </el-table-column>
    </el-table>

    <!-- 分页 -->
    <el-pagination
      @size-change="changeSize"
      @current-change="changePage"
      :current-page="pagenum"
      :page-sizes="[2, 4, 6, 8]"
      :page-size="pagesize"
      layout="total, sizes, prev, pager, next, jumper"
      :total="totals"
    >
    </el-pagination>

    <!-- 修改对话框 -->
    <el-dialog title="修改用户" :visible.sync="editFormVisible">
      <el-form :model="form">
        <el-form-item label="用户名" :label-width="formLabelWidth">
          <el-input v-model="form.username"></el-input>
        </el-form-item>
        <el-form-item label="昵称" :label-width="formLabelWidth">
          <el-input v-model="form.nickname"></el-input>
        </el-form-item>
        <!-- <el-form-item label="头像" :label-width="formLabelWidth">
          <template slot-scope="scope">
            <div style="width: 140px">
              <el-image
                :src="form.avatar"
                v-model="form.avatar"
                style="height: 80px; width: 80px; border-radius: 50px"
              ></el-image>
            </div>
          </template>
        </el-form-item> -->
        <el-form-item label="会员等级" :label-width="formLabelWidth">
          <el-input v-model="form.user_level_id"></el-input>
        </el-form-item>
        <el-form-item label="手机" :label-width="formLabelWidth">
          <el-input v-model="form.phone"></el-input>
        </el-form-item>
        <el-form-item label="邮箱" :label-width="formLabelWidth">
          <el-input v-model="form.email"></el-input>
        </el-form-item>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="editFormVisible = false">取 消</el-button>
        <el-button type="primary" @click="editFormVisible = false">确 定</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
export default {
  // 组件名称
  name: "demo",
  // 组件参数 接收来自父组件的数据
  props: [],
  // 局部注册的组件
  components: {},
  // 组件状态值
  data() {
    return {
      input: "",
      tableData: [],
      keyword: "",
      pagenum: 1,
      pagesize: 2,

      editFormVisible: false,
      form: {
        username: "",
        nickname:"",
        user_level_id:"",
        phone:"",
        email:""
      },
      formLabelWidth: "120px",
    };
  },
  // 计算属性
  computed: {
    zbqusers() {
      let zbquser = this.tableData;
      zbquser = zbquser.filter((item) => {
        return item.username.indexOf(this.keyword) > -1;
      });
      let zbqstate = (this.pagenum - 1) * this.pagesize;

      let zbqend = zbqstate + this.pagesize;

      this.totals = zbquser.length;
      return zbquser.slice(zbqstate, zbqend);
    },
  },
  // 侦听器
  watch: {},
  // 组件方法
  methods: {
    getmt() {
      this.$axios
        .get("/admin/user/1")
        .then((res) => {
          console.log(res);
          this.tableData = res.data.list;
        })
        .catch((error) => {
          console.log(error.response);
        });
    },
    changeSize(size) {
      this.pagesize = size;
    },
    changePage(page) {
      this.pagenum = page;
    },
    // 修改
    zbqrdit(row) {
      // this.$axios
      //   .post("/admin/user/1")
      //   .then((res) => {
          this.form = row;
          this.editFormVisible = true;
        // })
        // .catch((error) => {
        //   console.log(error.response.data);
        // });
    },  

    // 单行删除
    zbqdel(id) {
      this.$axios
        .post(`/admin/user/${id}/delete`)
        .then((res) => {
          console.log(res);
          let index = this.tableData.filter((item) => {
            return item.id == id;
          });
          this.tableData.splice(index, 1);
          
        })
        .catch((error) => {
          console.log(error.response.data);
        });
    },
  },
  // 以下是生命周期钩子 注：没用到的钩子请自行删除
  /**
   * 在实例初始化之后，组件属性计算之前，如data属性等
   */
  beforeCreate() {},
  /**
   * 组件实例创建完成，属性已绑定，但DOM还未生成，$ el属性还不存在
   */
  created() {},
  /**
   * 在挂载开始之前被调用：相关的 render 函数首次被调用。
   */
  beforeMount() {},
  /**
   * el 被新创建的 vm.$ el 替换，并挂载到实例上去之后调用该钩子。
   * 如果 root 实例挂载了一个文档内元素，当 mounted 被调用时 vm.$ el 也在文档内。
   */
  mounted() {
    this.getmt();
  },
  /**
   * 数据更新时调用，发生在虚拟 DOM 重新渲染和打补丁之前。
   * 你可以在这个钩子中进一步地更改状态，这不会触发附加的重渲染过程。
   */
  beforeUpdate() {},
  /**
   * 由于数据更改导致的虚拟 DOM 重新渲染和打补丁，在这之后会调用该钩子。
   * 当这个钩子被调用时，组件 DOM 已经更新，所以你现在可以执行依赖于 DOM 的操作。
   */
  updated() {},
  /**
   * keep-alive 组件激活时调用。 仅针对keep-alive 组件有效
   */
  activated() {},
  /**
   * keep-alive 组件停用时调用。 仅针对keep-alive 组件有效
   */
  deactivated() {},
  /**
   * 实例销毁之前调用。在这一步，实例仍然完全可用。
   */
  beforeDestroy() {},
  /**
   * Vue 实例销毁后调用。调用后，Vue 实例指示的所有东西都会解绑定，
   * 所有的事件监听器会被移除，所有的子实例也会被销毁。
   */
  destroyed() {},
};
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<!--使用了scoped属性之后，父组件的style样式将不会渗透到子组件中，-->
<!--然而子组件的根节点元素会同时被设置了scoped的父css样式和设置了scoped的子css样式影响，-->
<!--这么设计的目的是父组件可以对子组件根元素进行布局。-->
<style scoped>
.tou {
  text-align: left;
  margin-top: 20px;
}
hr {
  margin-top: 20px;
}

.el-button {
  margin-left: 10px;
}
</style>
